<?php

/**
 * Pedido form.
 *
 * @package    zing
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class PedidoForm extends BasePedidoForm
{
    
    public function __construct($defaults = array(), $options = array(), $CSRFSecret = null)
    {
        if(isset($defaults['fechaEntrega']))
        {
            $fecha = $defaults['fechaEntrega'];
            $defaults['fechaEntrega'] = date('dmy',strtotime($fecha));            
        }

        
        return parent::__construct($defaults, $options, $CSRFSecret);
    }
    
    
  public function configure()
  {
      
      unset($this['updated_at']);
      unset($this['created_at']);
      
      unset($this['productos_list']);
      
      $this->widgetSchema['fechaEntrega'] = new sfWidgetFormInputText();

      $this->widgetSchema['fechaEntrega']->setAttribute('size','6');
      
      $this->widgetSchema['idCliente']->setAttribute("class","combobox");      
      
      $this->validatorSchema['fechaEntrega']->setOptions(array('date_format'=>'#(?P<day>\d{2})(?P<month>\d{2})(?P<year>\d{2})#',
                                                                     'date_output' => '20y-m-d H:i:s','date_format_input'=>'dd-MM-20yy' ));
      $this->setDefault('idCliente',0);            
      
      
      
        $subForm = new sfForm();

        $j = -1;
        
        if(!$this->isNew())
        {
            $listaPedidosProducto = $this->getObject()->getPedidoProducto();
            foreach ($listaPedidosProducto as $pedidoProducto)
                {
                    $j++;
                    
                    $form = new PedidoProductoForm($pedidoProducto);

                    $subForm->embedForm($j, $form);

                }
        }

        $max = 10;

        for ($i = $j + 1; $i < $max; $i++)
         {
           $pedidoProducto = new PedidoProducto();
           $pedidoProducto->Pedido=$this->getObject();//$this->getObject());
           $form = new PedidoProductoForm($pedidoProducto);//$pedidoProducto);
           
           $subForm->embedForm($i, $form);
         }

         $this->embedForm('pedido_prod', $subForm);

    }

    public function doSave($con = null) 
    {
             

        
        $forms = $this->embeddedForms['pedido_prod']->embeddedForms;

        $pedidoProds = $this->values['pedido_prod'];
        foreach($pedidoProds as $k => $pedidoProd)
        {
            if(($pedidoProd['cantidad']=="0") and $forms[$k]->isNew())
            {
                unset($this->embeddedForms['pedido_prod']->embeddedForms[$k]); 
                unset($this->values['pedido_prod'][$k]); 
                unset($this->taintedValues['pedido_prod'][$k]); 
            }    
//            }else
//            {
//                $this->embeddedForms['pedido_prod']->embeddedForms[$k]->getObject()->Pedido=$this->getObject();
//            }
            
        }
        
        parent::doSave($con);
        
      

//        $forms = $this->embeddedForms['pedido_prod']->embeddedForms;
//
//        foreach($forms as $k => $pedidoProdForm)
//        {
//                $pedidoProdForm->getObject()->setIdPedido($this->getObject()->getId());
//                $pedidoProdForm->getObject()->save();
//            
//        }
//        
        
        
        
        $listaPedidosProducto = $this->getObject()->getPedidoProducto();
        foreach ($listaPedidosProducto as $pedidoProducto)
            {
                if($pedidoProducto->getCantidad()==0)
                {
                    $pedidoProducto->delete();
                }
            }        

        
//        $forms = $this->embeddedForms['pedido_producto']->embeddedForms;
//
//        foreach ($forms as $pedidoProductoForm)
//        {
//            
//            $pedidoProducto = $pedidoProductoForm->getObject();
//            
//            if(isset($pedidoProductoForm))
//            {
//
//
//                  if(!(($pedidoProducto->getCantidad())==0))
//                  {
//                      if($pedidoProducto->getIdPedido() !== $this->getObject()->getId())
//                      {
//                        $pedidoProducto->setIdPedido($this->getObject()->getId());
//                        $pedidoProducto->save();
//                      }
//                  }else
//                  {
//                      $pedidoProducto->delete();                      
//                  }
//            }
//         }
            
    }
}
